#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>

int main(int argc, char** argv) {

    printf("CHAR BIT           : %d\n", CHAR_BIT);
    printf("CHAR MAX           : %d\n", CHAR_MAX);
    printf("CHAR MIN           : %d\n", CHAR_MIN);
    printf("INT MAX            : %d\n", INT_MAX);
    printf("INT MIN            : %d\n", INT_MIN);
    printf("LONG MAX           : %ld\n", (long) LONG_MAX);
    printf("LONG MIN           : %ld\n", (long) LONG_MIN);
    printf("SCHAR MAX          : %d\n", SCHAR_MAX);
    printf("SCHAR MIN          : %d\n", SCHAR_MIN);
    printf("SHORT MAX          : %d\n", SHRT_MAX);
    printf("SHORT MIN          : %d\n", SHRT_MIN);
    printf("UNSIGNED CHAR MAX  : %d\n", UCHAR_MAX);
    printf("UNSIGNED INT MAX   : %u\n", (unsigned int) UINT_MAX);
    printf("UNSIGNED LONG MAX  : %lu\n", (unsigned long) ULONG_MAX);
    printf("UNSIGNED SHORT MAX : %d\n", (unsigned short) USHRT_MAX);

    printf("Storage size for float : %li\n", sizeof(float));
    printf("FLOAT MAX              : %g\n", (float) FLT_MAX);
    printf("FLOAT MIN              : %g\n", (float) FLT_MIN);
    printf("NEGATIVE FLOAT MAX     : %g\n", (float) -FLT_MAX);
    printf("NEGATIVE FLOAT MIN     : %g\n", (float) -FLT_MIN);
    printf("DOUBLE MAX             : %g\n", (double) DBL_MAX);
    printf("DOUBLE MIN             : %g\n", (double) DBL_MIN);
    printf("NEGATIVE DOUBLE MAX    : %g\n", (double) -DBL_MAX);
    printf("Precision value: %d\n", FLT_DIG );

    printf("%li\n", 0xFeeL);
    return 0;
}
